import { Blog } from "../model/Blog.js"
import { Op } from "sequelize";


const fn_list =async(ctx,next)=>{
    let keyword=ctx.query.keyword || '' //后端获取数据的方法
    console.log(keyword);
     //判断keyword 如果keyword有值就去数据库查询，否则返回表中所有的数据
    let blogs
    if(keyword){
        //在数据库中查询 title 包含keyword 或者author包含keyword 对应记录应该包含在结果集中
        blogs=await Blog.findAll({
            where:{
                [Op.or]:[
                    {
                        title:{
                            [Op.like]: `%${keyword}%`
                        },
                    },
                    {
                        author:{
                             [Op.like]: `%${keyword}%`
                        },
                    },
                ]
            }
        })

    }else{
        blogs=await Blog.findAll()
    }
    
   
    ctx.body={
        code:1000,
        msg:'获取列表成功',
        data:blogs
    }
}
const fn_getById=async(ctx,next)=>{
    ctx.body='查询指定博客'
    let id = ctx.params.id || 0;
    let obj = ctx.request.body;
    let blog = await Blog.findByPk(id)
    ctx.body={
        code:1000,
        mgs:"查询成功",
        data:blog
    }
    
}
const fn_add=async(ctx,next)=>{
    ctx.body="新增博客"
    /*  1.获取请求的数据
        2.处理数据及业务逻辑（将数据插入数据库）
        3返回响应结果
     */                    
    
        let obj=ctx.request.body;
        let blog= await Blog.create(obj);
        ctx.body={
            code:1000,
            msg:'新增成功',
            data:blog
        }
        console.log(ctx.request.body);
        

}


const fn_edit=async(ctx,next)=>{
    ctx.body="修改指定博客"
    let id = ctx.params.id || 0;
    let obj = ctx.request.body;
    await Blog.update(obj, {
        where: {
            id: id
        }
    })
    ctx.body = {
        code: 1000,
        msg: '修改成功',
        data: null
    }


}


const fn_del=async(ctx,next)=>{
    ctx.body='删除指定博客'
    /**
     * 获取前端传来的数据
     * 处理相关业务逻辑
     * 返回处理过后的响应结果
     */

    // 拿到id
    let id=ctx.params.id || 0
    // 处理业务逻辑：删除数据库中对应id的记录
    let count= await Blog.destroy({
        where:{
            id:id
        }
    })
    // 处理响应数据
    let res;
    if(count===1){
        res={
            code:1000,
            msg:"删除成功",
            data:null
        }
    }else{
        res={
            code:4000,
            msg:"删除失败",
            data:null
        }
    }

    ctx.body=res;
}


export default[
    {
        method:'get',
        url:'/blogs',
        fn:fn_list
    },
    {
        method:'get',
        url:'/blogs/:id',
        fn:fn_getById
    },
    {
        method:'post',
        url:'/blogs',
        fn:fn_add
    },
    {
        method:'put',
        url:'/blogs/:id',
        fn:fn_edit
    },
    {
        method:'del',
        url:'/blogs/:id',
        fn:fn_del
    }
]
   









